package com.example.server.security;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author Cui_Qingfeng
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PreAuthorize {

    /**
     * 该注解修饰的方法会自动启动认证
     * 认证的方式有多种，可以通过type来配置
     * hasAnyRole 只要用户具备需要的角色列表中的任意一项，都可以直接访问该资源
     * hasAllRoles 用户需要具备角色列表中全部的角色，才能访问该资源
     *
     * roles 手动配置某个资源具备的角色
     * @return
     */
    String type() default "hanAnyRole";

    String[] roles();
}
